// 控制层调用数据的各种方法 对查询数据进行逻辑分析 指挥着数据层 配置好借口需要返回的信息 即是数据层的老板也是保姆 
// 什么都要给数据层安排好  
// 引入数据层的文件 针对密码加密引入加盐文件夹
// 控制层的操作 也需要module.exports的提供方法 同时利用module.exprots开放出去
let userModel = require('../model/userModel')
const SALTOBJ = require('../config')

let md5 = require('blueimp-md5')

module.exports = {
    handlePostUser: (req, res) => {
        let newUser = req.body
        userModel.getUserByName(newUser.username, (err, data) => {
            if (err) return res.json({
                status: 0,
                msg: '查询数据失败,用户名重复'
            })
            if (data.length !== 0) return res.json({
                status: 0,
                msg: '用户名已存在，请换一个！'
            })
            newUser.password = md5(newUser.password, SALTOBJ.SALT)
            userModel.addNewUser(newUser, (err, data) => {
                if (err) return res.json({
                    status: 0,
                    msg: '数据库操作失败'
                })
                if (data.affectedRows !== 0) {
                    res.json({
                        status: 1,
                        msg: '操作成功'
                    })
                }
            })
        })

    },
    userlogin: (req, res) => {
        let userID = req.body
        userID.password = md5(userID.password, SALTOBJ.SALT)
        userModel.userselect(userID, (err, data) => {
            // console.log(data)
            // return
            if (err) return res.json({
                status: 0,
                msg: '没有该用户'
            })
            if (data.length === 0) return res.json({
                status: 0,
                msg: '登录失败'
            })

            req.session.isLogin = true; // 将登录成功的状态，保存到 req.session 中
            req.session.user = data[0]; // 将登录人的 信息对象，保存到 req.session 中
            res.json({
                status: 1,
                msg: '登陆成功'
            })

        })
    },
    userOutlogin: (req, res) => {
        req.session.destroy(function (err) {
            if (err) throw err
            res.redirect('/')
        })
    }
}
